[IA64] Fix another bug which causes "Oops: time tick before it's due"
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Sat, 3 Jun 2006 21:21:07 +0000 (15:21 -0600)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Sat, 3 Jun 2006 21:21:07 +0000 (15:21 -0600)
Signed-off-by: Anthony Xu < anthony.xu@intel.com >
xen/arch/ia64/vmx/vlsapic.c

index 0f953f2e62644fded39ac8c8f5f74759735b95c3..f0d5c45f8481080aa6c2122688056c33848ac181 100644 (file)
@@ -39,6 +39,7 @@
 #include <asm/kregs.h>
 #include <asm/vmx_platform.h>
 #include <asm/hvm/vioapic.h>
+#include <asm/linux/jiffies.h>
 
 //u64  fire_itc;
 //u64  fire_itc2;
@@ -171,6 +172,8 @@ void vtm_set_itm(VCPU *vcpu, uint64_t val)
     clear_bit(ITV_VECTOR(vitv), &VCPU(vcpu, irr[0]));
     VCPU(vcpu,itm)=val;
     cur_itc =now_itc(vtm);
+    if(time_before(val, cur_itc))
+        val = cur_itc;
     if(val >  vtm->last_itc){
         expires = NOW() + cycle_to_ns(val-cur_itc) + TIMER_SLOP;
         set_timer(&vtm->vtm_timer, expires);